#include <time.h>
#include <math.h>
#include <stdio.h>
#include <Types.h>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <vector>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#ifdef __MAC_OSX__
#define CLOCK_MONOTONIC          0
#define CLOCK_PROCESS_CPUTIME_ID 0
#define CLOCK_THREAD_CPUTIME_ID  0
#include <mach/mach_time.h>
void clock_gettime( const U32 unused, timespec * tsp );
#endif
double DiffTimespec( const timespec * beg, const timespec * end );
void AnalyzeRunTimeCPUTime( const std::vector< timespec * > & clks, const U32 numRuns, const U32 numThreads );
void AnalyzeRunTimeWallTime( const timespec * clks, const U32 numRuns );
